/*
 * 文 件 名:  SystemDicTag.java
 * 版    权:  Ysten Technologies Co., Ltd. Copyright YYYY-YYYY,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  bo.chen
 * 修改时间:  2014年12月11日
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package lv.pig.base.jsp;

import lv.pig.base.constants.BaseCacheConstants;
import lv.pig.base.utils.SpringUtils;

import org.springframework.cache.Cache;
import org.springframework.cache.Cache.ValueWrapper;
import org.springframework.cache.CacheManager;

/**
 * <一句话功能简述> <功能详细描述>
 * 
 * @author bo.chen
 * @version [版本号, 2014年12月11日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class SystemDicTag extends CodeTableTag
{
    
    private static final long serialVersionUID = -2730938319103802211L;
    
    private String value;
    
    private String type;
    
    private final static String table_name = "t_system_dic";
    
    private final static String value_col = "value";
    
    private final static String data_col = "code";
    
    @Override
    protected Object getCodeTableValue()
    {
        super.setDataCol(data_col);
        super.setTableName(table_name);
        super.setValCol(value_col);
        super.setWhereClause("type='" + type + "'");
        super.setValue(value);
        CacheManager cacheManager = (CacheManager)SpringUtils.getBean("cacheManager");
        Cache cache = cacheManager.getCache(BaseCacheConstants.code_table_tag);
        ValueWrapper cachevalue = cache.get(this.toString());
        if (null == cachevalue)
        {
            Object value = super.getCodeTableValue();
            cache.put(super.toString(), value);
            return value;
        }
        return cachevalue.get();
    }
    
    /**
     * @return 返回 value
     */
    public String getValue()
    {
        return value;
    }
    
    /**
     * @param 对value进行赋值
     */
    public void setValue(String value)
    {
        this.value = value;
    }
    
    /**
     * @return 返回 type
     */
    public String getType()
    {
        return type;
    }
    
    /**
     * @param 对type进行赋值
     */
    public void setType(String type)
    {
        this.type = type;
    }
}
